perm filename MIXED.FAI[TMP,LCS] blob
sn#172854 filedate 1975-08-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE MIXER
C00004 00003 CLRBFI
C00006 00004 DLAY: PUSHJ P,IN1
C00008 00005 IN1: IN 11,
C00010 00006 DONE: PUSHJ P,OBUF
C00012 00007 GETNAM: MOVEI A,
C00013 00008 GETNUM: PUSHJ P,INNUM
C00015 ENDMK
C⊗;
TITLE MIXER
A←1 ↔ B←2 ↔ C←3 ↔ D←4 ↔ E←5
DUR←6 ↔ MAX←7 ↔ R1←10 ↔ R2←11
BC1←12 ↔ BC2←13 ↔ BC3←14
P←17 ↔ NBUFS←←4
DEFINE FIXX(N)
< JUMPGE N,.+5
MOVNS N
FIX N,233000
MOVNS N
CAIA
FIX N,233000 >
DEFINE FLOAT(N)
< TLC N,232000
FADR N,N >
MIXER: MOVE P,[IOWD 20,PDL]
CLRBFI
OUTSTR [ASCIZ/
TYPE NAME 1: /]
SETZ BC1,
PUSHJ P,GNAME
OPEN 11,[14↔'DSK '↔BUF1]
JRST 4,.
INBUF 11,NBUFS
LOOKUP 11,FILNAM
JRST MIXER
AOJ BC1,
SECOND: CLRBFI
OUTSTR [ASCIZ/ TYPE NAME 2: /]
PUSHJ P,GNAME
OPEN 2,[14↔'DSK '↔BUF2]
JRST 4,.
INBUF 2,NBUFS
LOOKUP 2,FILNAM
JRST SECOND
AOJ BC1,
CLRBFI
OUTSTR [ASCIZ/ NUMBER OF CHANNELS = /]
INCHWL A
PUSHJ P,INNUM
SKIPLE
CAILE 4
HRRZI 1
HRRZM NCHNLS#
CLRBFI
OUTSTR [ASCIZ/ DELAY TIME = /]
INCHWL A
PUSHJ P,GETNUM
HRRZ A,NCHNLS
FLOAT(A)
FMPR A
MOVEM SNUM2#
CLRBFI
OUTSTR [ASCIZ/ SRATE = /]
INCHWL A
PUSHJ P,INNUM
SKIPN
HRRZI =10000
FLOAT(0)
MOVEM FSRATE#
FMPR SNUM2
FIXX(0)
MOVEM SNUM2
GRAT: CLRBFI
OUTSTR [ASCIZ/ RATIO ( FIRST:SECOND ) = /]
INCHWL A
PUSHJ P,GETNUM
SKIPG R1,
MOVE R1,[1.]
FMPR R1,[=4096.]
FIXX(R1)
INCHRS A
JRST .+3
PUSHJ P,GETNUM
SKIPG R2,
MOVE R2,[1.]
FMPR R2,[=4096.]
FIXX(R2)
ONAME: CLRBFI
OUTSTR [ASCIZ/ OUTPUT NAME : /]
PUSHJ P,GNAME
OPEN [14↔'DSK '↔BUF3,,0]
JRST 4,.
OUTBUF NBUFS
ENTER FILNAM
JRST ONAME
PUSHJ P,OBUF+1
SETZM EOF1#
SETZM EOF2#
SETZ DUR,
SETZ MAX,
PUSHJ P,IN2
AOJ BC2,
SETOM DFLG#
DLAY: PUSHJ P,IN1
ADD DUR,BC1
CAML DUR,SNUM2
JRST FIND
PUSHJ P,MOV
JRST DLAY
MOV: ILDB D,A
TDON D,[NEG: 777777774000]
LDB D,A
IMUL D,R1
ASH D,-15
CAMLE D,MAX
MOVE MAX,D
IDPB D,C
SOJLE BC3,MOVO
SOJG BC1,MOV
POPJ P,
MOVO: PUSHJ P,OBUF
SOJG BC1,MOV
POPJ P,
EQBUF: PUSHJ P,IN1
JRST SETFLG
FIND: SOJ BC2,
SUB DUR,SNUM2
JUMPLE DUR,EQBUF
SUB BC1,DUR
SKIPLE BC1
PUSHJ P,MOV
SETFLG: SETZM DFLG
MOVE BC1,DUR
MOVE DUR,SNUM2
ADD DUR,BC2
MIX: ILDB D,A
TDON D,NEG
LDB D,A
ILDB E,B
TDON E,NEG
LDB E,B
IMUL D,R1
IMUL E,R2
ADD D,E
ASH D,-15
CAMLE D,MAX
MOVE MAX,D
IDPB D,C
SOJLE BC3,MIXO
CKIN: SOJLE BC1,MIXI
SOJG BC2,MIX
PUSHJ P,IN2
ADD DUR,BC2
JRST MIX
MIXO: PUSHJ P,OBUF
JRST CKIN
MIXI: PUSHJ P,IN1
JRST CKIN+1
IN1: IN 11,
CAIA
JRST CKEOF
HRRZI BC1,3
IMUL BC1,BUF1+2
HRRZ A,BUF1+1
HRLI A,1400
POPJ P,
CKEOF: STATO 11,20000
JRST 4,.
SETOM EOF1
SKIPGE EOF2
JRST DONE
SKIPGE DFLG
JRST BREAK
PART2: MOVE R1,R2
SOJLE BC2,GMOR
MOVE BC1,BC2
MOVE A,B
PUSHJ P,MOV
GMOR: PUSHJ P,IN2
ADD DUR,BC2
JRST PART2+2
BREAK: SUB DUR,SNUM2
SETZ D,
ZRIT: IDPB D,C
SOJLE BC3,ZOB
AOJL DUR,ZRIT
MOVE DUR,SNUM2
JRST PART2
ZOB: PUSHJ P,OBUF
JRST ZRIT+2
IN2: IN 2,
CAIA
JRST CKEOF2
HRRZI BC2,3
IMUL BC2,BUF2+2
HRRZ B,BUF2+1
HRLI B,1400
POPJ P,
CKEOF2: STATO 2,20000
JRST 4,.
SETOM EOF2
SKIPGE EOF1
JRST DONE
ADD DUR,BC1
PUSHJ P,MOV
PUSHJ P,IN1
JRST .-3
OBUF: HRRM C,BUF3+1
OUT
CAIA
JRST 4,.
HRRZI BC3,3
IMUL BC3,BUF3+2
HRRZ C,BUF3+1
HRLI C,1400
POPJ P,
DONE: PUSHJ P,OBUF
RELEAS
OUTSTR [ASCIZ/
MAX AMPL = /]
MOVE MAX
PUSHJ P,OUTINT
OUTSTR [ASCIZ/
NUMBER OF SAMPLES = /]
MOVE DUR
PUSHJ P,OUTINT
OUTSTR [ASCIZ/
TOTAL DUR = /]
IDIV DUR,NCHNLS
FLOAT(DUR)
FDVR DUR,FSRATE
MOVE DUR
FIXX(0)
PUSHJ P,OUTINT
HRRZI "."
OUTCHR
MOVE DUR
FIXX(DUR)
FLOAT(DUR)
FSBR DUR
FMPR [=1000.]
FIXX(0)
AOJ
PUSHJ P,OUTINT
EXIT
NAME: 'MUSIC '
'MUSAA '
'MUSIC '
EXT: 'MUS '
'DMD '
'MUS '
GNAME: SETZM FILEXT+1
SETZM FILPPN
MOVE A,EXT(BC1)
MOVEM A,FILEXT
PUSHJ P,GETNAM
SKIPN A
MOVE A,NAME(BC1)
MOVEM A,FILNAM
CAIE C,"."
JRST NOEXTN
PUSHJ P,GETNAM
MOVEM A,FILEXT
NOEXTN: CAIE C,"["
JRST FFDX
PUSHJ P,GETP
HRLZM A,FILPPN
PUSHJ P,GETP
HRRM A,FILPPN
FFDX: INCHRW C
CAIE C,12
JRST FFDX
POPJ P,
GETNAM: MOVEI A,
MOVE B,[440600,,A]
GETNML: PUSHJ P,RCH
POPJ P,
SUBI C,40
TLNE B,770000
IDPB C,B
JRST GETNML
GETP: MOVEI A,
GETPL: PUSHJ P,RCH
POPJ P,
TRNE A,770000
JRST GETPL
LSH A,6
ADDI A,-40(C)
JRST GETPL
RCH: INCHWL C
CAIN C,42
JRST RCHQ
CAIE C,11
CAIN C," "
JRST RCH
CAIE C,"."
CAIN C,","
POPJ P,
CAIE C,"["
CAIN C,"]"
POPJ P,
RCHQR: CAIGE C,40
POPJ P,
CAIL C,"a"
CAILE C,"z"
CAIA
SUBI C,40
POPJ1: AOS (P)
POPJ P,
RCHQ: INCHWL C
JRST RCHQR
GETNUM: PUSHJ P,INNUM
FLOAT(0)
CAIE A,"."
POPJ P,
MOVE C,
INCHRS A
POPJ P,
PUSHJ P,INNUM
JUMPE NODP
FLOAT(0)
FMPR TABL(B)
NODP: FADR C
POPJ P,
TABL: =0.1
=0.01
=0.001
=0.0001
=0.00001
INNUM: SETZ
SETO B,
CAIL A,60
CAILE A,71
POPJ P,
IMULI =10
ADDI -60(A)
AOJ B,
INCHRS A
POPJ P,
JRST INNUM+2
OUTINT: HRRZI B,7
JUMPE OUTZ
IDIVI =10
ADDI A,60
HRRZM A,BLK(B)
SOJGE B,OUTINT+1
OCHR: OUTCHR BLK+1(B)
CAIGE B,6
AOJA B,OCHR
POPJ P,
OUTZ: CAIL B,7
HRLZI B,300000
JRST OCHR
FILNAM: 0
FILEXT: 0
0
FILPPN: 0
BUF1: BLOCK 3
BUF2: BLOCK 3
BUF3: BLOCK 3
PDL: BLOCK 44
BLK: BLOCK 10
END MIXER